package alg;
//给定一个含有 n 个正整数的数组和一个正整数 target 。
//找出该数组中满足其总和大于等于 target 的长度最小的子数组
// [numsl, numsl+1, ..., numsr-1, numsr] ，并返回其长度。
// 如果不存在符合条件的子数组，返回 0 。
class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int sum = 0,len = Integer.MAX_VALUE,n = nums.length;//len定义为无穷大，方便后序min的比较
        for(int left = 0,right = 0;right < n;right++){
            //进窗口
            sum += nums[right];
            //判断
            while(sum >= target){
                len = Math.min(len , right - left + 1);//更新结果
                sum -= nums[left];//出窗口
                left++;

            }
        }
        return len == Integer.MAX_VALUE? 0 :len;
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        int[] number = {2,3,1,2,4,3};
        System.out.println(solution.minSubArrayLen(7,number));
    }
}